import Taro from '@tarojs/taro'

/**
* 服务器环境类型。切换环境时，仅需要切换 env 的值即可。
* innnerDev -- 内网开发、 pubDev -- 公网开发、 release -- 生产
*/
// const env: string = "innerDev";
// const env: string = "pubDev";
const env: string = "release";
// const env: string = "local";

/**
* 获取当前运行环境对应的 url 信息
*/
export function getServerUrls(): ServerUrl {
  switch (env) {
    case "innerDev":
      return getServerUrls4InnerDev();
    case "pubDev":
      return getServerUrls4PubDev();
    case "release":
      return getServerUrls4Release();
    case "local":
      return getServerUrls4Local();
    default:
      Taro.showToast({ title: "当前环境信息有误，请在ServerUrls中修正", icon: 'error' })
      return null;
  }
}

/**
* 将给定的 uri 与 baseUrl 拼接，得到完整的 url 地址
*/
export function concatWithBaseUrl(pUri): string {
  const urlObj = getServerUrls();
  if (null === urlObj || !urlObj.baseUrl || urlObj.baseUrl === "") {
    Taro.showToast({ title: "当前环境 baseUrl 有误，请在ServerUrls中修正" })
    return '';
  }
  // if (!fullUrl.startsWith('http://') && !fullUrl.startsWith('https://'))
  return pUri.indexOf('http') === -1 ? urlObj.baseUrl + pUri : pUri
}


/**
* 将给定的 uri 与 shopUrl 拼接，得到完整的 url 地址.
* shopUrl 为空时，默认与 baseUrl 拼接
*/
export function concatWithShopUrl(pUri): string {
  const urlObj = getServerUrls();
  if (null === urlObj) {
    Taro.showToast({ title: "当前环境地址信息有误，请在ServerUrls中修正" })
    return '';
  }

  // shopUrl 地址非空，直接拼接并返回
  if (urlObj.shopUrl && urlObj.shopUrl !== "") {
    return pUri.indexOf('http') === -1 ? urlObj.shopUrl + pUri : pUri
  }

  // shopUrl 地址为空，但 baseUrl 非空，使用 baseUrl 拼接
  if (urlObj.baseUrl && urlObj.baseUrl !== "") {
    return pUri.indexOf('http') === -1 ? urlObj.baseUrl + pUri : pUri
  }
  return ''
}


/**
* 将给定的 uri 与 talentUrl 拼接，得到完整的 url 地址.
* talentUrl 为空时，默认与 baseUrl 拼接
*/
export function concatWithTalentUrl(pUri): string {
  const urlObj = getServerUrls();
  if (null === urlObj) {
    Taro.showToast({ title: "当前环境地址信息有误，请在ServerUrls中修正" })
    return '';
  }

  // talentUrl 地址非空，直接拼接并返回
  if (urlObj.talentUrl && urlObj.talentUrl !== "") {
    return pUri.indexOf('http') === -1 ? urlObj.talentUrl + pUri : pUri
  }

  // talentUrl 地址为空，但 baseUrl 非空，使用 baseUrl 拼接
  if (urlObj.baseUrl && urlObj.baseUrl !== "") {
    return pUri.indexOf('http') === -1 ? urlObj.baseUrl + pUri : pUri
  }
  return ''
}

/**
* 获取 生产 环境需要使用的 urls 信息
*/
function getServerUrls4Local() {
  const baseUrl = 'http://192.168.10.115:8081';
  return {
    baseUrl: baseUrl,
    baseUrls: `https://webchat.jnszcf.com.cn:18122/yz/assets/`,
    vrUrl: 'https://webchat.jnszcf.com.cn:10017',
    shopUrl: baseUrl,
    talentUrl: baseUrl,
  };
}


/**
* 获取 生产 环境需要使用的 urls 信息
*/
function getServerUrls4Release() {
  const baseUrl = 'https://webchat.jnszcf.com.cn:18122';
  return {
    baseUrl: baseUrl,
    baseUrls: `${baseUrl}/yz/assets/`,
    vrUrl: 'https://webchat.jnszcf.com.cn:10017',
    shopUrl: baseUrl,
    talentUrl: baseUrl,
  };
}

/**
* 获取 公网开发 环境需要使用的 urls 信息
*/
function getServerUrls4PubDev() {
  const baseUrl = 'http://123.233.246.210:8122';
  return {
    baseUrl: baseUrl,
    baseUrls: `${baseUrl}/yz/assets/`,
    vrUrl: 'https://webchat.jnszcf.com.cn:10017',
    shopUrl: baseUrl,
    talentUrl: baseUrl,
  };
}

/**
* 获取 内网开发 环境需要使用的 urls 信息
*/
function getServerUrls4InnerDev() {
  const baseUrl = 'http://192.168.74.215:8122';
  const assetsUrl = 'https://webchat.jnszcf.com.cn:18122';
  return {
    baseUrl: baseUrl,
    baseUrls: `${assetsUrl}/yz/assets/`,
    // baseUrls: 'http://172.16.56.30:8122/yz/assets/',
    vrUrl: 'https://webchat.jnszcf.com.cn:10017',
    shopUrl: 'http://192.168.74.215:8122',
    talentUrl: baseUrl,
  };
}

/**
 * 服务器地址对象
*/
class ServerUrl {
  // 基础 url 地址
  baseUrl: string
  // `${{ baseUrl }}/yz/assets/`
  baseUrls: string
  // VR 地址
  vrUrl: string
  // 商城地址
  shopUrl: string
  // talent (通知公告)的地址
  talentUrl: String
}

// 这个不清楚是什么环境，先留在这里吧，如果有用，再定义一个环境常量和方法即可。
// 内网（无线）
// export const baseUrl = 'http://192.168.2.102:8122'
// export const baseUrls = 'http://192.168.2.102:8122/yz/assets/'
// export const urlVR = 'http://192.168.0.70:3000'
